#include <bits/stdc++.h>
using namespace std;
long long T,n,ans,maxn,maxi;
long long a[200010],b[200010],h[200010];
long long read(){
    long long x=0,f=1;
    char ch=getchar();
    while(!isdigit(ch)){
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(isdigit(ch)){
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
void dfs(int dep,int cnt){
    if(dep>n){
        ans=0;
        for(int i=1; i<=n; i++) h[i]=0;
        for(int i=1; i<=cnt; i++) h[b[i]]=1;
        for(int i=1; i<=cnt; i++){
            if(a[b[i-1]]==a[b[i]]) ans+=a[b[i]];
        }
        int k=0;
        for(int i=1; i<=n; i++){
            if(h[i]) continue;
            if(a[k]==a[i]) ans+=a[i];
            k=i;
        }
        maxn=max(maxn,ans);
        return ;
    }
    b[cnt+1]=dep;
    dfs(dep+1,cnt+1);
    dfs(dep+1,cnt);
}
int main(){
    freopen("color.in","r",stdin);
    freopen("color.out","w",stdout);
    cin>>T;
    while(T--){
        cin>>n;
        maxn=0;
        for(int i=1; i<=n; i++) a[i]=read();
        if(n<=15){
            dfs(1,0);
            cout<<maxn<<endl;
        }
        else{
            for(int i=1; i<=n; i++) h[a[i]]++;
            maxn=h[1]-1,maxi=1;
            for(int i=2; i<=1e6; i++){
                if((h[i]-1)*i>maxn){
                    maxn=(h[i]-1)*i;
                    maxi=i;
                }
            }
            int k=0;
            for(int i=1; i<=n; i++){
                if(a[i]==maxi) continue;
                if(a[k]==a[i]) maxn+=a[i];
                k=i;
            }
            cout<<maxn<<endl;
        }
    }
    return 0;
}